<?php

/*		Fichier de fonctions personnalis�es
		Par Infoxp
		Le 09/04/2011
		Permet de definir des fonctions maisons pour le site	
*/

function bpath(){
/*$basepath = substr($_SERVER['DOCUMENT_ROOT'],strpos($_SERVER['DOCUMENT_ROOT'],"leprojet"));
$basepath = explode("/",$basepath);
$bpath = "";
	foreach($basepath as $v){
		if(sizeof($basepath)>1)
			$bpath.='..';
		else
			$bpath.='.';
		$bpath .= '/';
	}
	var_dump($_SERVER['DOCUMENT_ROOT']);*/
	return $_SERVER['DOCUMENT_ROOT'].'/';
}

	include (bpath() . DIR_INCLUDE.'/classes/Groupe.class.php');

	//function setPageTitle permet de modifier le titre de la page depuis les fichiers modules
	//String : $title
	//Return void
	function setPageTitle($title, $appendSiteName = true)
	{
		global $pageTitle;

		$title .= ($appendSiteName) ? ' :: '.SITE_NAME : '';
		$pageTitle = strval($title);

		/*else if(isset($_SESSION["title"]) and $_SESSION["title"] != $title)
		{
			$_SESSION["title"] = htmlspecialchars($title);
			header("location:".$_SERVER["URI_REQUEST"].'?'.$_SERVER['QUERY_STRING']);
		}*/

	}
	
	
	
	//function GetPager permet de faire la numerotation � cliquer pour aller sur les pages

	//int : $itemCount, $pageNum,$itemStep, $fid

	//string : $pageTarget

	//return string

	function GetPager($itemStep,$itemCount,$pageNum, $pageTarget, $fid)
	{
		if (!($itemCount<$itemStep))
		{
			// <

			$str = ($pageNum-$itemStep<=0)?'':'<a href="forum-'.$pageTarget.'.html?num='.($pageNum-$itemStep).'&fid='.$fid.'" title="">&lt;</a>';

			// num
			for($i=-5;$i<5;$i++)
			{
				$page = $pageNum+($itemStep*$i);
				if($page>$itemStep)
				{
					if($page==$pageNum)
						$str .= '['.$i.']';
					else
						$str .= ' <a href="forum-'.$pageTarget.'.html?num='.($page).'&fid='.$fid.'" title="">&lt;</a>';
				}
			}

			// >
			$str .= ($pageNum+$itemStep>$itemCount)?(''):(' <a href="forum-'.$pageTarget.'.html?num='.($pageNum+$itemStep).'&fid='.$fid.'" title="">&gt;</a>');

			return $str;

		}

		return "no";

	}

       function getVideoString($stringVideo)
       {
			// youtu.be
	
			if(strstr($stringVideo,'youtu.be'))
	
			{
	
				$sp = preg_split("/\//", $stringVideo);
	
				$video = 'http://www.youtube.com/embed/'.$sp[3];
	
			}
	
	
	
			// youtube
	
			elseif(strstr($stringVideo,'youtube'))
	
			{
	
				if(!strstr($stringVideo,'embed'))
	
				{
	
					$sp = preg_split("/[=&]/", $stringVideo);
	
					$video = 'http://www.youtube.com/embed/'.$sp[1];
	
				} else {
	
					$sp = preg_split("/[\/]/", $stringVideo);
	
					$video = 'http://www.youtube.com/embed/'.$sp[4];
	
				}
	
			}
	
	
	
			// dailymotion
	
			elseif(strstr($stringVideo,'daily'))
	
			{
	
				$sp = explode('/',$stringVideo);
	
				$video = 'http://www.dailymotion.com/embed/video/'.$sp[4];
	
			}elseif($stringVideo!=""){
				$stringVideo="urlInvalide!!";	
			}
	
		
	
			if($stringVideo=="")
				return EON("");
			else if($stringVideo=='urlInvalide!!')
				return '[Url de la video non reconnu, url de type : Youtube, youtu.be ou dailymotion attendue]';
			else
				return '<iframe src="'.$video.'" frameborder="0"></iframe>';

       }

       

       function getGoodDate($date)

       {

           global $mois, $jours;

           

           $tmp1 = explode(" ",$date);

           $tmp = explode("-",$tmp1[0]);

           $timestamp = strtotime($tmp[0].'-'.$tmp[1].'-'.$tmp[2].' 23:59:59');



           $jour = $jours[intval(date('N',$timestamp))-1]; 

           $heure = explode(':',$tmp1[1]);$heure = $heure[0].':'.$heure[1];

           

           return $jour." ". $tmp[2].' '.$mois[intval($tmp[1])-1].' '.$tmp[0].' ';
		   
		   //* ('.str_replace(':', ' h ', $heure).')';

       }

		function getMappage($item=null)
		{
			global $fil_mappage;
			if($item)
				return 	$fil_mappage[$item];
			else
				return $fil_mappage;
		}

       function getGoodHeure($date)

       {

           global $mois, $jours;

           

           $tmp1 = explode(" ",$date);

           $tmp = explode("-",$tmp1[0]);

           $timestamp = strtotime($tmp[0].'-'.$tmp[1].'-'.$tmp[2].' 23:59:59');



           $jour = $jours[intval(date('N',$timestamp))-1]; 

           $heure = explode(':',$tmp1[1]);$heure = $heure[0].':'.$heure[1];

           

           return '('.str_replace(':', ':', $heure).')';

       }

	function Array2string($tab)
	{
		$str ="";
		foreach($tab as $v)
		{
			if($v!="")
				$str .= $v.";";
		}
		return $str;
	}



      /* function SetAttente($membreId,$totalAInscrire,$activiteId)

        {

            global $pdo;

            

            $q = $pdo->prepare('INSERT INTO activite_attente SET activite_id ='.$activiteId.', membre_id='.$membreId.', nombreAccompagnateurs='.$totalAInscrire);

            $q->execute();

        }
*/
        

        


/* TODO

	function SetSuivi($type, $tid, $membreId,$totalAInscrire=0)
	{
		global $pdo;

		$q = $pdo->query('SELECT * FROM forum_topic WHERE topic_id ='.$tid);
		$res = $q->fetch();

		$tab = explode(";",$res['membreInscrit']);
		$k = array_search($membreId, $tab);

		switch($type)
		{
			case 'inscription':
				
				if(!is_numeric($k))
				{
	                if(($totalAInscrire+1) <=  intval($res['participantMax']) - GetCountInscrits($res['sortie_activite_id']))
	                {
	                    for($i=1;$i<=($totalAInscrire+1);$i++)
	                        array_push($tab,($membreId));
	
	                    setInscrit('add',$membreId,$res['sortie_activite_id']);
	
	                }else{
	                    SetAttente($membreId,$totalAInscrire,$res['sortie_activite_id']);
	                }
				}
				break;

			case 'desinscription':
				
				if(is_numeric($k)){ $tab[$k] = '';

                                setInscrit('del',$membreId,$res['sortie_activite_id']);

                            }
                                $pdo->query("DELETE FROM activite_attente WHERE membre_id=".$membreId." AND activite_id=".$itemId);
				
				break;
		}

		$q=$pdo->prepare('UPDATE activite_sortie SET membreInscrit="'.Array2String($tab).'" WHERE sortie_activite_id='.$itemId);
		$q->execute();
		
	return $tab;

	}
*/
       function leprojet_var_debug($var)

       {

           echo '<pre>';

           var_dump($var);

           echo '</pre>';

       }

        

      
       

       /**

        * set the html entities

        * param type $input

        * return type 

        */

       function set_html_entities($input)

       {

            $in = array("é","ê","è","à","ç","ë","°","û","ù");

            $out= array('&#233;',"&#234;","&#232;","&#224;","&#231;","&#235;","&#176;","&#251;","&#249;");



           return str_replace($in, $out, $input);

       }

       

       function setAmp($string)

       {

           return str_replace('&amp;',"&",$string);

       }

       

       

        

	function ReformatDate($date)

	{

	

		$tmp = explode(" ",$date);

		$date = explode("-",$tmp[0]);

	

		return $date[2].'/'.$date[1].'/'.$date[0]. " ".$tmp[1];

	}

	function setParam($input, $except)
	{
		$i = 0;$str=null;
		foreach($input as $k=>$v)
		{
			if(!array_search($k,$except))
			{
				if($i++>0) $str .= '&';
				$str .= $k.'='.$v;
			}
		}
		
		return $str;
	}

	function genPagination2($total,$currentPage,$module,$baseLink,$param,
		$limit,$nextPrev=true) 
	{ 

		$baseLink = $module.'-'.$baseLink.'.html?'.$param.'&start=';
		if(!$total OR !$currentPage OR !$baseLink)
		{
			return false;
		}
		
		//Total Number of pages 
		$totalPages = ceil($total/$limit); 
		//Text to use after number of pages 
		$txtPagesAfter = ($totalPages==1)? " page": " pages"; 

		//Start off the list. 
		$txtPageList = ' '.$txtPagesAfter.' : '; 
		//$txtPageList = ' '.$totalPages.$txtPagesAfter.' : '; 
		//Show only 3 pages before current page(so that we don't have too many pages) 
		$min = ($currentPage - 3 < $totalPages && $currentPage-3 > 0) ? $currentPage-3 : 1; 

		//Show only 3 pages after current page(so that we don't have too many pages) 
		$max = ($currentPage + 3 > $totalPages) ? $totalPages : $currentPage+3; 

		//Variable for the actual page links 
		$pageLinks = ""; 

		//Loop to generate the page links 
		for($i=$min;$i<=$max;$i++) 
		{ 
			if($currentPage==$i) 
			{ 
				//Current Page 
				$pageLinks .= '<span class="cadre_pagination"> '.$i.'</span>'; 
			} 
			else 
			{ 
				$pageLinks .= '<a href="'.$baseLink.$i.'" class="cadre_pagination" title=""> '.$i.' </a>'; 
			} 
		} 

		if($nextPrev) 
		{
			//Next and previous links 
			$next = ($currentPage + 1 > $totalPages) ? false : '<a href="'.$baseLink.($currentPage + 1).'" title=""> Suivante</a>'; 
			 
			$prev = ($currentPage - 1 <= 0 ) ? false : '<a href="'.$baseLink.($currentPage - 1).'" title="">Précédente</a> '; 
		}

		return ($totalPages>1) ? $txtPageList.$prev.$pageLinks.$next : ''; 
	} 

	function genPagination($total,$currentPage,$baseLink,$nextPrev=true,$fid,$limit=25) 

	{ 

		$baseLink = 'forum-'.$baseLink.'.html?fid='.$fid.'&num=';

	

		if(!$total OR !$currentPage OR !$baseLink) 

		{ 

			return false; 

		} 

			 

		//Total Number of pages 

		$totalPages = ceil($total/$limit); 

		 

		//Text to use after number of pages 

		$txtPagesAfter = ($totalPages==1)? " page": " page"; 

		 

		//Start off the list. 

		$txtPageList = ' '.$txtPagesAfter.' : '; 

		//$txtPageList = ' '.$totalPages.$txtPagesAfter.' : '; 

		 

		//Show only 3 pages before current page(so that we don't have too many pages) 

		$min = ($currentPage - 3 < $totalPages && $currentPage-3 > 0) ? $currentPage-3 : 1; 

		 

		//Show only 3 pages after current page(so that we don't have too many pages) 

		$max = ($currentPage + 3 > $totalPages) ? $totalPages : $currentPage+3; 

		 

		//Variable for the actual page links 

		$pageLinks = ""; 

		 

		//Loop to generate the page links 

		for($i=$min;$i<=$max;$i++) 

		{ 

			if($currentPage==$i) 

			{ 

				//Current Page 

				$pageLinks .= '<span class="cadre_pagination"> '.$i.' </span>'; 

			} 

			else 

			{ 

				$pageLinks .= '<a href="'.$baseLink.$i.'" class="cadre_pagination" title=""> '.$i.' </a>'; 

			} 

		} 

		 

		if($nextPrev) 

		{ 

			//Next and previous links 

			$next = ($currentPage + 1 > $totalPages) ? false : '<a href="'.$baseLink.($currentPage + 1).'" title=""> Suivante</a>'; 

			 

			$prev = ($currentPage - 1 <= 0 ) ? false : '<a href="'.$baseLink.($currentPage - 1).'" title="">Précédente</a> '; 

		} 

		 

		return ($totalPages>1) ? $txtPageList.$prev.$pageLinks.$next : ''; 

		 

	} 

	

	
	

	
	/*function date_de_naissance2age($date){
		$ex = explode('/',$date);
		if($mois >= date('m') && $ex[0] > date('d'))
		$age = intval(date('Y')  - $ex[2]) - 1;
	else
		$age = intval(date('Y')  - $ex[2]);
	 return $age. ' An'.(($age > 1) ? 's' : '');	
	}*/
	
	function EON($s)
    {
           if ($s == '') 
                return 'aucune information';
           else
                return $s;
    }

	//function display_info permet de construire un cadre d'info defini par info_type => argument 2

	//Str : $chn

	//Int : $info_type

	//Return void

	

	function display_info($chn,$info_type=0,$print=true)

	{

		switch(intval($info_type))

		{

			case 1:

				$class = "info";

				$img = DIR_DESIGN . "/" . getDesignName() . "/images/display/info.png";

			break;

			

			case 2:

				$class = "warn";

				$img = DIR_DESIGN . "/" . getDesignName() . "/images/display/warning.png";

			break;

			

			case 3:

				$class = "error";

				$img = DIR_DESIGN . "/" . getDesignName() . "/images/display/error.png";

			break;

			

			case 4:

				$class = "succees";

				$img = DIR_DESIGN . "/" . getDesignName() . "/images/display/succees.png";

			break;

			

			case 5 :

				$class = "maintenance";

				$img = DIR_DESIGN . '/' . getDesignName() . '/images/display/maintenance.png';

			break;

			

			default:

				$class = '';

				$img = '';

			break;

		}

		

		$imag = (!empty($img)) ? '<img src="' . $img . '" alt=""  title="" />' : '';



		if($print)

			print '<div class="' . $class.'">' . $imag . ' ' . $chn . '</div>';

		else

			return '<div class="' . $class.'">' . $imag . ' ' . $chn . '</div>';

	}



	function SetValueFromQuery($sql)

	{

		global $pdo;

		$q=$pdo->prepare($sql);

		$q->execute();

		$q->closeCursor();
		
	return $q;
	}

	function GetValueFromQuery($sql)
	{
		try {
			
		global $pdo;
        $q=$pdo->query($sql);
		$r=$q->fetch();
		} catch (Exception $e) { 
			header('Location: index.php');
		}
	return $r['value']?$r['value']:null;
	}

	

	
	
	
	
	//function event permet d'envoyer un mp � chaque event
	//by infoxp
	function event(){
		global $pdo;

		$req1 = $pdo->query("SELECT * FROM forum_membres WHERE membre_id>=10");

		if(date("d/m")=="25/12")
		{
			while($data = $req1->fetch(PDO::FETCH_OBJ))
			{	
				$req2 = $pdo->prepare("SELECT * FROM forum_membres_event WHERE (event_membre_id=? AND event_type='Noel')");

				$req2->execute(array($data->membre_id));
					if($req2->rowCount() < 1){
							$req3 = $pdo->prepare("INSERT INTO forum_membres_event (event_time,event_type,event_membre_id) VALUES(?,?,?)");

							$req3->execute(array(time(),"Noel",$data->membre_id));
							$sujet = "Joyeux noël " .id2pseudo($data->membre_id);
							$text = 'Bonjour ' . id2pseudo($data->membre_id) . ' et joyeux noël'."\n".'

							Pour cette occasion nous t\'offrons en guide de cadeau de noël 250 point de bonus que tu pourra utiliser comme bon te semble.';

							sendMp($data->membre_id,$sujet,$text,1,true);

							$req3 = $pdo->prepare("UPDATE forum_membres SET membre_bonus=membre_bonus+250 WHERE membre_id=?");
							$req3->execute(array($data->membre_id));
					}
			}//end while

		}elseif(date("d/m")=="1/1"){
			$query = $pdo->query("SELECT membre_id,membre_sexe FROM forum_membres WHERE membre_id >= 10");
	
		while($data = $query->fetch(PDO::FETCH_OBJ)){
				sendMp($data->membre_id,"Bonne année","Bonjour " . sex2color($data->membre_sexe,$data->membre_id) . ",\nL'équipe ".SITE_NAME." et tous ses membres te souhaite une trés bonne et heureuse année ".date("Y") . " et une trés bonne santé :clin:,\nEt pour cette heureuse occasion nous t'offrons 500 points de bonus");
				
					$query = $pdo->query("UPDATE forum_membres SET membre_bonus=membre_bonus+500 WHERE membre_id=".$data->membre_id);
		}
		
		}else{ //sinon c'est l'event anniversaire

			while($data = $req1->fetch(PDO::FETCH_OBJ))
			{
				$birth = explode('/',$data->membre_date_de_naissance);
				$birthday = $birth[0].'/'.$birth[1];

				$req2 = $pdo->prepare("SELECT * FROM forum_membres_event WHERE event_membre_id=? AND event_type='Aniv' AND event_time!=".date("dmY"));

				$req2->execute(array($data->membre_id));

				if($birthday == date("d/m") && $req2->rowCount() == 0)
				{
					$req3 = $pdo->prepare("INSERT INTO forum_membres_event (event_time,event_type,event_membre_id) VALUES(?,?,?)");
							$req3->execute(array(date("dmY"),"Aniv",$data->membre_id));

							$sujet = "Bonne anniversaire " . id2pseudo($data->membre_id);

							$text = 'Bonjour ' . id2pseudo($data->membre_id) . ' et joyeux anniversaire'."\n".'

							Pour cette joyeuse occasion nous t\'offrons en guide de cadeau d\'anniversaire 250 point de bonus que tu pourra utiliser comme bon te semble.'."\n\n".'Encore une fois, joyeux anniversaire à toi'."\n\n".'Cordialement l\'équipe leprojet ';

							sendMp($data->membre_id,$sujet,$text,2,true);

							$req3 = $pdo->prepare("UPDATE forum_membres SET membre_bonus=membre_bonus+250 WHERE membre_id=?");

							$req3->execute(array($data->membre_id));
				}
			}
		}

			$req3 = $pdo->prepare("DELETE FROM forum_membres_event WHERE DATE_FORMAT(event_time,'%m%Y')<?");
			$req3->execute(array(date("mY")));
		
	}

	//function getDesignName permet de r�cuperer le nom du design utilis�e par le membre actuellement
	//Str : $id
	//Return Str

	function getDesignName($id=0)
	{
		global $pdo;
		$id = ($id == 0 and isset($_SESSION["id"])) ? intval($_SESSION["id"]) : intval($id);
		$design = $pdo->prepare("SELECT membre_design AS design FROM forum_membres WHERE membre_id=:id");

		$design->bindParam(":id",$id);
		$design->execute();

		$res = $design->fetch();
		$design->closeCursor();
		if($design->rowCount() > 0 && !empty($res["design"])){
			return $res["design"];

		}else{
			return DEFAUT_DESIGN;
		}
	}

	//function getLienModule permet d'�viter � ecrire ?m et &sm= plusieur fois. Raccourci la cr�ation d'un lien module
	//Str : $module
	//Str : $pageName = NULL
	//Return Str

	function getLienModule($module, $pageName = '')
	{
		$return = '/'.htmlentities($module);
		if(!empty($pageName))
		{
			if($module == 'tutoriels')
				$return .= '/'.htmlentities($pageName);
			else
				$return .= '-'.htmlentities($pageName);
		}
		$return .= '.html';

		return $return;
	}

	//function deletePeopleLocated permet de supprimer la position du membre sur les pages du forum pour le whospage

	//bool,bool

	//Return void

	//By infoxp

	//param1 permet du delete � la deconnexion le membre membre_id,param2 permet de delete le visiteur qui se connecter depuis son ip

	function deletePeopleLocated($logoutForce=false,$loginForce=false){

		global $pdo;
		$req = "DELETE FROM forum_whospage WHERE";
		$execute = false;
		if($logoutForce && isset($_SESSION['id'])){
			$req .= " membre_id=".$_SESSION['id'];
			$execute = true;
		}else{
			if($loginForce){
				$req .= " ip='".ip2long($_SERVER['REMOTE_ADDR'])."'";
				$execute = true;
			}else{
				$req .= " online_time<".time();
				$execute = true;
			}
		}
		if($execute)
			$delete = $pdo->query($req);

	}

	//function updatePeopleLocated permet de modifier la position du membre sur les pages du forum pour le whospage
	//url
	//Return void
	//By infoxp
	//Attention � ajouter sur chaque page des modules ou on souhaite avoir l'info user sur la page
	function updatePeopleLocated($url){
		global $pdo;
		$id = (isset($_SESSION['id'])) ? $_SESSION['id'] : -1;
		$url = preg_replace("#&num=[0-9]#",'',$url);
		$url = preg_replace("#num=[0-9]&#",'',$url);
		$url = preg_replace("#&\#(.+)#",'',$url);
		
		//mise � jour de la liste
		deletePeopleLocated();

		$req = $pdo->prepare("SELECT id FROM forum_whospage WHERE membre_id=? OR ip=?");

		$req->execute(array($id,ip2long($_SERVER['REMOTE_ADDR'])));

		$req->closeCursor();

			if($req->rowCount() < 1){

				//c'est un nouveau visiteur

				$req = $pdo->prepare("INSERT INTO forum_whospage (membre_id,online_time,ip,url) VALUES(?,?,?,?)");

				$req->execute(array($id,time()+60*5,ip2long($_SERVER['REMOTE_ADDR']),$url));

				$req->closeCursor();

			}else{

				

				

				$req = $pdo->prepare("UPDATE forum_whospage SET online_time=?,url=? WHERE membre_id=? OR ip=?");

				$req->execute(array(time()+60*5,$url,$id,ip2long($_SERVER['REMOTE_ADDR'])));

				$req->closeCursor();

				

			}

			

			

	}

	

	//function getPeopleLocated permet de renvoyer des informations de la pr�sence des personnes sur une page du site

	//url

	//Return Array

	//By infoxp

	function getPeopleLocated($url){

		global $pdo;

		

		$info = array();

		//On enl�ve le numero de page de l'url � save dans la bdd

		$url = preg_replace("#&num=[0-9]#",'',$url);

		$url = preg_replace("#&\#(.+)#",'',$url);

		

		$peopleVisitor = $pdo->prepare("SELECT * FROM forum_whospage WHERE url=? AND membre_id=-1");

		$peopleVisitor->execute(array($url));

		$info['countPeopleVisitor'] = intval($peopleVisitor->rowCount());

		$peopleVisitor->closeCursor();

		/* Nombre de membres */

		$peopleMember = $pdo->prepare("SELECT * FROM forum_whospage WHERE url=? AND membre_id>-1");

		$peopleMember->execute(array($url));

		$info['countPeopleMember'] = intval($peopleMember->rowCount());

		$peopleMember->closeCursor();

		

		

		$people = $pdo->prepare("SELECT * FROM forum_whospage WHERE url=?");

		$people->execute(array($url));

		$memberList = '';

		

			$info['countPeople'] = intval($info['countPeopleMember'] + $info['countPeopleVisitor']);

		

		$i = 0;

		while($data = $people->fetch()){

			if($data['membre_id'] != -1)

			{

				if($i==0){

					$memberList	.= ' : '.sex2color(id2sex($data["membre_id"]),$data["membre_id"]);

					$i=1;

				}else{

					$memberList .= ' / ' . sex2color(id2sex($data["membre_id"]),$data["membre_id"]);

				}

			}

		}

		

		

		$info['memberList'] = $memberList;

		

		return $info;	

	}

	
	function getPartenariatList(){
			global $pdo;

		
		
		$info = array();
			
			$req = $pdo->query("SELECT * FROM partenaires WHERE partenaire_etat>0");
			while($data = $req->fetch(PDO::FETCH_OBJ)){
				$info[] = $data;
			}

		

		return $info;	
	}

      

	
	

	//function EOP permet de renvoyer 'Aucune information' si aucune donn�es n'est pr�sente sur l'argument $str ou si $str est vide

	//Str : $str = NULL

	//Return $str ou Aucune information

	

	function EOP($str=NULL)

	{

		return ($str == NULL or $str == "") ? 'Aucune information' : htmlspecialchars($str);	

	}


	//function getMaintenance permet d'envoyer le message de maintenance si il y en à une

	//Return Void

	

	function getMaintenance()

	{

		$file = "./maintenance.txt";

		if(file_exists($file))

		{

			if(id2level() < ADMIN)

			{	

				setPageTitle("Maintenance");

				exit(display_info('<div class="block_maintenance">Nous sômmes désolé mais ce site est actuellement en maintenance.'."\n" . 'Merci de revenir plus tard'."\n".'Cordialement l\'équipe  ' . SITE_NAME . '</div>',MAINTENANCE,false)."\n".'</body>'."\n".'</html>');

			}

		}

	}

	

	//function getPagination  permet de construire une pagination avec les arguments ad�quat

	//Int $nbPage

	//Return str => pagination compl�te

	

	function getPagination($nbPage)

	{

		$display = '';

		$nbPage = intval($nbPage);

		

		$m = (isset($_GET["m"])) ? strval($_GET["m"]) : '';

		$sm = (isset($_GET["sm"])) ? strval($_GET["sm"]) : '';

		$page = (isset($_GET["p"])) ? intval($_GET["p"]) : 1;

		

		for($i=1;$i<=$nbPage;$i++)

		{

			if($nbPage > 1)

			{

				if($i > 1 and $i < 3 and $page != 1)

					$display .= '<a href="' . getLienModule($m,$sm) . '&p=' . $i-1 . '" title="">Page précèdente </a>';

				   

				$display .= '<a href="' . getLienModule($m,$sm) . '&p=' . $i . '" title=""> ' . $i . ' </a> ';

				

					if($i == $nbPage and $page != $nbPage)

						$display .= '<a href="' . getLienModule($m,$sm) . '&p=' . $i+1 . '" title=""> Page suivante</a>';

			}

		}

	}

	

	

	//function startSavedSession permet de d�marrer la session enregistr� dans un cookie existant

	//void

	//Return void
	
	function saveUrl($url){
		if($url!=getLienModule("membre","connexion")&&$url!=getLienModule("membre","logout")){
				unset($_SESSION['urlSaved']);
				$_SESSION['urlSaved'] = $url;	
		}
	}
	
	function getSavedUrl(){
		if(isset($_SESSION['urlSaved'])){
			return strval($_SESSION['urlSaved']);
		}else{
			return "index.html";	
		}
	}

	function startSavedSession()

	{

		global $pdo;

		

		if(isset($_COOKIE["savedSession"]) and !isset($_SESSION["id"]))

		{

			$exp = explode(',',$_COOKIE["savedSession"]);

			$req = $pdo->prepare("SELECT membre_mdp FROM forum_membres WHERE membre_id=:id");

			$req->bindParam(":id",$exp[0],PDO::PARAM_INT);

					

			$req->execute();

			$data = $req->fetch();

			

			if(substr($data["membre_mdp"],0,2) == $exp[1])

			{

				$_SESSION["id"] = $exp[0];

				setPageTitle('location:' . $_SERVER["REQUEST_URI"] . '?' . $_SERVER["QUERY_STRING"]);

			}

			else

			{

				// On efface le cookie car le membre � modifier son mot de passe depuis un autre pc

				setcookie("savedSession","",time());

			}

			

			$req->closeCursor();

		}	

	}



/////////////////////////////////////////////////////////////////////////////////

////// Fonctions �crites par cfillion ///////////////////////////////////////////
/////	Mise à jour par Zulad et Infoxp //////

	function redirect($message, $url = '/index.html', $messageLevel='information')
	{
		$_SESSION['messageCommunication'] = $message;
		$_SESSION['messageComLu'] = 0;
		$_SESSION["messageCommunicationLevel"] = $messageLevel;	

		if(empty($url))
					$url = '/index.html'; 
					
		header("Cache-Control: no-cache, must-revalidate");
		header('location:'.$url);
	}

	

	function buildBreadcrumb($module, $moduleSection = '')

	{

		global $fil_ariane;

		

		if($moduleSection == 'index')
			$moduleSection = '';

		$fil = array('index' => $fil_ariane['index']);

		if(!empty($module) && !empty($moduleSection))
		{
			if(isset($fil_ariane[$module.'/'.$moduleSection]))
			{

				$sections = explode('/', $fil_ariane[$module.'/'.$moduleSection]);
				for($i = 0; $i < count($sections) - 1; $i++)
				{
					$section = $sections[$i];

					if(!empty($section) && isset($fil_ariane[$section]))

						$fil[$section] = $fil_ariane[$section];

					else

						$fil[$section] = $section;

					}

				$fil[$module.'/'.$moduleSection] = $sections[count($sections) - 1];

			}

			else
			{
				if(isset($fil_ariane[$module]))
					$fil[$module] = $fil_ariane[$module];
				else
					$fil[$module] = $module;
				$fil[$module.'/'.$moduleSection] = $moduleSection;
			}
		}
		else if(!empty($module))
		{
			if(isset($fil_ariane[$module]))
				$fil[$module] = $fil_ariane[$module];
			else
				$fil[$module] = $module;
		}

		return $fil;
	}
	
	//Function saveInputValue

	//Array inputValue

	//return void

	//permet de sauvegader le contenu des champs des formulaires

	function saveInputValue(Array $post){

		//creation du cookie valide 3 min

		setcookie("leprojet_formSave",serialize($post),(time() + 60*3));

	}

	

	

	//Function savedInputValue

	//str keyPostName

	//return value $_POST[$key]

	//permet de retourner le contenu du formulaire via $key pr�c�dament sauvegard�

	function savedInputValue($key){

		if(isset($_COOKIE["leprojet_formSave"])){

			$post = unserialize($_COOKIE["leprojet_formSave"]);

				if(isset($post[$key]))
					return $post[$key];

				return;	

		}
			return;

	}



function auto_logout_users_banned(){

	global $pdo;

	if(isset($_SESSION["id"]))

	{

			$al = $pdo->prepare("SELECT membre_rang FROM forum_membres WHERE membre_id=?");

			$al->execute(array($_SESSION["id"]));

				$fetch = $al->fetch();
			$al->closeCursor();

					if(intval($fetch['membre_rang']) < 1)

					{
						header('location:'.getLienModule("membre","logout").'?param=ban');	
					}

	}

}



function auto_deban_timeExpired(){

	global $pdo;

	

	$query = $pdo->query("SELECT membre_id,membre_bantime FROM forum_membres WHERE membre_rang=0 AND membre_bantime > 0");

	

	while($data = $query->fetch()){

		if($data["membre_bantime"] <= time())

				{

					//on deban l'user car sa sanction à pris fin

				$query2 = $pdo->prepare("UPDATE forum_membres SET membre_rang=membre_last_rang , membre_ban_info=0 , membre_bantime=0 WHERE membre_id=?");

					$query2->execute(array($data["membre_id"]));

				}

	}

}



function admin_deleteban($bid){

	global $pdo;

	

	$query = $pdo->prepare("SELECT membre_id,membre_bantime FROM forum_membres WHERE membre_rang=0 AND membre_id=?");

	$query->execute(array($bid));

	

	$data = $query->fetch();

		if($query->rowCount() > 0){

					//on deban l'user car sa sanction à pris fin

				$query2 = $pdo->prepare("UPDATE forum_membres SET membre_rang=membre_last_rang , membre_ban_info=0 , membre_bantime=0 WHERE membre_id=?");

					$query2->execute(array($data["membre_id"]));

		}

}



function tokenAdmin(){

	//calculMembre_id-calculRang

	$id = (isset($_SESSION['id']) ? $_SESSION['id'] : 0);	

	$rang = id2level();

		if($rang==ADMIN)

			return ($id ^ "Token") . "-" . ($rang ^ "Admin");

		else

			return ($id ^ "Token") . "-" . ($rang ^ "Another");

}

function upload($index,$destination,$maxsize=1024,$extensions=FALSE)
{
	$etat = array();
	$ext = substr(strrchr($index['name'],'.'),1);
   //Test1: fichier correctement uploadé
     if (!isset($index) || $index['error'] > 0) return -1;
   //Test2: taille limite
     elseif ($maxsize !== FALSE && $index['size'] > $maxsize) return FALSE;
   //Test3: extension
     elseif ($extensions !== FALSE && !in_array($ext,$extensions)) return -2;
	 else{
	 //Deplacement dans touts les design
	$path = "./" . DIR_DESIGN . "/";
		$dirRes = opendir($path);
		
		
		$tmp = $index['tmp_name'];
		$source = '';
		$moved=false;
	 	while($data = readdir($dirRes)){
				
				
				if($data != '.' && $data != '..'){
					if($moved==false){
						removeImagesListe($tmp,$path.$data.'/'.$destination.'.'.$ext);
						$etat[] = move_uploaded_file($tmp,$path.$data.'/'.$destination.'.'.$ext);
						$source = $path.$data.'/'.$destination.'.'.$ext;
						$moved=true;
					}
					else{
						if(is_dir($path.$data.'/')){
							$etat[] = copy($source,$path.$data.'/'.$destination.'.'.$ext);
						}
					}
				}
		
		} 
	}
   //Déplacement
     return array("etat"=>$etat,"extention"=>$ext,"filename"=>$destination.$ext);
}

function removeImagesListe($imageLink){
	$path = "./" . DIR_DESIGN . "/";
		$dirRes = opendir($path);
	 	while($data = readdir($dirRes)){	
				if($data != '.' && $data != '..'){
					if(file_exists($path.$data.'/'.$imageLink))
					unlink($path.$data.'/'.$imageLink);
				}
		} 
}

/*
	function sex2color($sex,$id=-1)
	{

		$rang = ($id==-1) ? $id : id2level($id);
		$pseudo = str_replace(array(chr(0),"\n","<br />"),"",id2pseudo($id)); //Recuperation du pseudo selon l'id

		if($rang == ADMIN)
			$class = "admin_color";
		elseif($rang == MODO)
			$class = "modo_color";
		elseif($rang==NEWSER)
			$class = "newser_color";
		elseif($rang ==PARTENAIRE)
			$class = "partenaire_color";
		elseif($rang == BANNI)
			$class = "banni_color";
		elseif($sex==HOMME)
			$class = "membre_color_homme";
		else
			$class = "membre_color_femme";

		//getLienModule(nomDuModule,nomDuFichier)

		
		if($id==-1){
			if($sex==HOMME)
				return '<span class="'.$class.'">Homme</span>';
			else
				return '<span class="'.$class.'">Femme</span>';
			
		}else{
				return ($pseudo!='') ? '<a href="' . getLienModule('membre', 'profil') . '?uname=' . $pseudo . '" title="" ><span class="'.$class.'">'.$pseudo.'</span></a>' : 'Compte fermé';
		}
	}
*/

function createProgressbar($percent,$pgbarimage="sondage/progress.png"){
	return '<div style="display:inline-block; background:#CCC; width:100px; height:5px; vertical-align:top text-top; text-align:left;"><img style="position:absolute; border:none; max-width:100px; max-height:5px;" src="'.DIR_DESIGN.'/'.getDesignName().'/images/'.$pgbarimage.'" width="'.(($percent>=100) ? 100 : $percent).'" height="5"/></div>';
}
/////////////////////////////////////////////////////////////////////////////////

//Verification de l'existence de certain elements critique du kernel



/*if(!function_exists("sex2color") || !function_exists("groupe2name") || !function_exists("id2pseudo") || !function_exists("id2level") || !function_exists("getAvatarById"))

		exit(utf8_encode("Erreur interne : Un element critique du kernel est absent, patientez l'administrateur fait tout son nécéssaire pour résoudre ce désagrément.Merci de votre compréhension"));*/

function loadModule(){
	global $pdo;
	
	$lien = DIR_IMAGE;
	if(isset($_GET['m']))
	{
		$bpath = bpath();
		$dirModule = DIR_MODULE . "/" . htmlspecialchars($_GET['m']);
		$fichier = (isset($_GET['sm']) && !empty($_GET['sm'])) ? htmlspecialchars($_GET['sm']) : "index";
		$hook_name = "KERNEL.MODULE.REQUIRED.FOR:".strtoupper($_GET["m"]);
		$hook = Hook::call($hook_name);
		if(file_exists($dirModule) && file_exists($dirModule . "/" . $fichier . ".php")&&(!Hook::exists($hook_name)||$hook===true))
		{
			include_once $dirModule."/".$fichier.".php";
		}
		else
		{
			
			if(file_exists(DIR_MODULE . "/{$_GET['m']}.php")&&($hook===null||$hook===true))
				include_once DIR_MODULE . "/{$_GET['m']}.php";
			else
			{
				include_once DIR_MODULE . "/404.php";
			
				$_GET['m'] = '404';
				$_GET['sm'] = null;
			}
		}
	}
	else
	{
		include_once DIR_MODULE . "/index.php";
	}
}

/***** Detection des mobiles *****/
function isMobile(){
	//User agent
	$ua = $_SERVER['HTTP_USER_AGENT'];
	//test si il s'agit d'un mobile
	return preg_match('/iphone/i',$ua) || preg_match('/android/i',$ua)
		   ||preg_match('/blackberry/i',$ua);
 
}
?>

